home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / gnu / othergnu / ispell.zoo / ispell.h < prev    next >
C/C++ Source or Header  |  1990-03-06  |  7KB  |  218 lines

  1. /* -*- Mode: Text -*- */
  2.  
  3. struct dent {
  4.     struct dent *next;
  5.     char *word;
  6.  
  7.     unsigned short used : 1;
  8.  
  9. /* bit fields for all of the flags */
  10.     unsigned short v_flag : 1;
  11.         /*
  12.             "V" flag:
  13.                 ...E --> ...IVE  as in CREATE --> CREATIVE
  14.                 if # .ne. E, ...# --> ...#IVE  as in PREVENT --> PREVENTIVE
  15.         */
  16.     unsigned short n_flag : 1;
  17.         /*
  18.             "N" flag:
  19.                     ...E --> ...ION  as in CREATE --> CREATION
  20.                     ...Y --> ...ICATION  as in MULTIPLY --> MULTIPLICATION
  21.                     if # .ne. E or Y, ...# --> ...#EN  as in FALL --> FALLEN
  22.         */
  23.     unsigned short x_flag : 1;
  24.         /*
  25.             "X" flag:
  26.                     ...E --> ...IONS  as in CREATE --> CREATIONS
  27.                     ...Y --> ...ICATIONS  as in MULTIPLY --> MULTIPLICATIONS
  28.                     if # .ne. E or Y, ...# --> ...#ENS  as in WEAK --> WEAKENS
  29.         */
  30.     unsigned short h_flag : 1;
  31.         /*
  32.             "H" flag:
  33.                     ...Y --> ...IETH  as in TWENTY --> TWENTIETH
  34.                     if # .ne. Y, ...# --> ...#TH  as in HUNDRED --> HUNDREDTH
  35.         */
  36.     unsigned short y_flag : 1;
  37.         /*
  38.             "Y" FLAG:
  39.                     ... --> ...LY  as in QUICK --> QUICKLY
  40.         */
  41.     unsigned short g_flag : 1;
  42.         /*
  43.             "G" FLAG:
  44.                     ...E --> ...ING  as in FILE --> FILING
  45.                     if # .ne. E, ...# --> ...#ING  as in CROSS --> CROSSING
  46.         */
  47.     unsigned short j_flag : 1;
  48.         /*
  49.             "J" FLAG"
  50.                     ...E --> ...INGS  as in FILE --> FILINGS
  51.                     if # .ne. E, ...# --> ...#INGS  as in CROSS --> CROSSINGS
  52.         */
  53.     unsigned short d_flag : 1;
  54.         /*
  55.             "D" FLAG:
  56.                     ...E --> ...ED  as in CREATE --> CREATED
  57.                     if @ .ne. A, E, I, O, or U,
  58.                             ...@Y --> ...@IED  as in IMPLY --> IMPLIED
  59.                     if # .ne. E or Y, or (# = Y and @ = A, E, I, O, or U)
  60.                             ...@# --> ...@#ED  as in CROSS --> CROSSED
  61.                                             or CONVEY --> CONVEYED
  62.         */
  63.     unsigned short t_flag : 1;
  64.         /*
  65.             "T" FLAG:
  66.                     ...E --> ...EST  as in LATE --> LATEST
  67.                     if @ .ne. A, E, I, O, or U,
  68.                             ...@Y --> ...@IEST  as in DIRTY --> DIRTIEST
  69.                     if # .ne. E or Y, or (# = Y and @ = A, E, I, O, or U)
  70.                             ...@# --> ...@#EST  as in SMALL --> SMALLEST
  71.                                             or GRAY --> GRAYEST
  72.         */
  73.     unsigned short r_flag : 1;
  74.         /*
  75.             "R" FLAG:
  76.                     ...E --> ...ER  as in SKATE --> SKATER
  77.                     if @ .ne. A, E, I, O, or U,
  78.                             ...@Y --> ...@IER  as in MULTIPLY --> MULTIPLIER
  79.                     if # .ne. E or Y, or (# = Y and @ = A, E, I, O, or U)
  80.                             ...@# --> ...@#ER  as in BUILD --> BUILDER
  81.                                             or CONVEY --> CONVEYER
  82.         */
  83.     unsigned short z_flag : 1;
  84.         /*
  85.             "Z FLAG:
  86.                     ...E --> ...ERS  as in SKATE --> SKATERS
  87.                     if @ .ne. A, E, I, O, or U,
  88.                             ...@Y --> ...@IERS  as in MULTIPLY --> MULTIPLIERS
  89.                     if # .ne. E or Y, or (# = Y and @ = A, E, I, O, or U)
  90.                             ...@# --> ...@#ERS  as in BUILD --> BUILDERS
  91.                                             or SLAY --> SLAYERS
  92.         */
  93.     unsigned short s_flag : 1;
  94.         /*
  95.             "S" FLAG:
  96.                     if @ .ne. A, E, I, O, or U,
  97.                             ...@Y --> ...@IES  as in IMPLY --> IMPLIES
  98.                     if # .eq. S, X, Z, or H,
  99.                             ...# --> ...#ES  as in FIX --> FIXES
  100.                     if # .ne. S,X,Z,H, or Y, or (# = Y and @ = A, E, I, O, or U)
  101.                             ...# --> ...#S  as in BAT --> BATS
  102.                                             or CONVEY --> CONVEYS
  103.         */
  104.     unsigned short p_flag : 1;
  105.         /*
  106.             "P" FLAG:
  107.                     if @ .ne. A, E, I, O, or U,
  108.                             ...@Y --> ...@INESS  as in CLOUDY --> CLOUDINESS
  109.                     if # .ne. Y, or @ = A, E, I, O, or U,
  110.                             ...@# --> ...@#NESS  as in LATE --> LATENESS
  111.                                             or GRAY --> GRAYNESS
  112.         */
  113.     unsigned short m_flag : 1;
  114.         /*
  115.             "M" FLAG:
  116.                     ... --> ...'S  as in DOG --> DOG'S
  117.         */
  118.  
  119.     unsigned short keep : 1;
  120.  
  121. #ifdef CAPITALIZE
  122.     /*
  123.     ** if followcase is set, the actual word entry (dent->word)
  124.     ** is followed by one or more further strings giving exact
  125.     ** capitalizations.   The first byte after the uppercase word
  126.     ** gives the number of capitalizations.  Each capitalization
  127.     ** is preceded by the character "+" if it is to be kept, or
  128.     ** "-" if it is to be discarded from the personal dictionary.
  129.     ** For example, the entry "ITCORP\0\3+ITcorp\0+ITCorp\0+ItCorp\0"
  130.     ** gives various ways of writing my e-mail address.  If all-lowercase
  131.     ** is acceptable, an all-lower entry must appear.  Simple
  132.     ** capitalization, on the other hand, is signified by the "capitalize"
  133.     ** flag.
  134.     **
  135.     ** Suffixes always match the case of the final character of a word.
  136.     **
  137.     ** If "allcaps" is set, the other two flags must be clear.
  138.     */
  139.     unsigned short allcaps : 1;    /* Word must be all capitals */
  140.     unsigned short capitalize : 1;    /* Capitalize the word */
  141.     unsigned short followcase : 1;    /* Follow capitalization exactly */
  142.     /*
  143.     ** The following entries denote the flag values that are actually
  144.     ** to be kept for this dictionary entry.  They may differ if the
  145.     ** "a" command is used for a word that differs only in capitalization.
  146.     */
  147.     unsigned short k_allcaps : 1;
  148.     unsigned short k_capitalize : 1;
  149.     unsigned short k_followcase : 1;
  150. #endif
  151.  
  152. };
  153.  
  154. #define WORDLEN 30
  155.  
  156. struct hashheader {
  157.     int magic;
  158.     int stringsize;
  159.     int tblsize;
  160. };
  161.  
  162. /* hash table magic number */
  163. #define MAGIC 2
  164.  
  165.     
  166. /*
  167.  * termcap variables
  168.  */
  169. #ifdef MAIN
  170. # define EXTERN /* nothing */
  171. #else
  172. # define EXTERN extern
  173. #endif
  174.  
  175. EXTERN char *tgetstr();
  176. EXTERN char PC;    /* padding character */
  177. EXTERN char *BC;    /* backspace if not ^H */
  178. EXTERN char *UP;    /* Upline (cursor up) */
  179. EXTERN char *cd;    /* clear to end of display */
  180. EXTERN char *ce;    /* clear to end of line */
  181. EXTERN char *cl;    /* clear display */
  182. EXTERN char *cm;    /* cursor movement */
  183. EXTERN char *dc;    /* delete character */
  184. EXTERN char *dl;    /* delete line */
  185. EXTERN char *dm;    /* delete mode */
  186. EXTERN char *ed;    /* exit delete mode */
  187. EXTERN char *ei;    /* exit insert mode */
  188. EXTERN char *ho;    /* home */
  189. EXTERN char *ic;    /* insert character */
  190. EXTERN char *il;    /* insert line */
  191. EXTERN char *im;    /* insert mode */
  192. EXTERN char *ip;    /* insert padding */
  193. EXTERN char *nd;    /* non-destructive space */
  194. EXTERN char *vb;    /* visible bell */
  195. EXTERN char *so;    /* standout */
  196. EXTERN char *se;    /* standout end */
  197. EXTERN int bs;
  198. EXTERN int li, co;    /* lines, columns */
  199.  
  200. EXTERN char termcap[1024];
  201. EXTERN char termstr[1024];    /* for string values */
  202. EXTERN char *termptr;
  203.  
  204. EXTERN char rootword[BUFSIZ];
  205. EXTERN struct dent *lastdent;
  206.  
  207. EXTERN char *hashstrings;
  208. EXTERN struct hashheader hashheader;
  209.  
  210. extern int aflag;
  211. extern int lflag;
  212.  
  213. EXTERN int erasechar;
  214. EXTERN int killchar;
  215.  
  216. EXTERN char tempfile[200];
  217.  
  218.